# -*- coding: utf-8 -*-
"""
Created on Sun Sep 21 14:17:54 2025

@author: User
"""

import pandas as pd
import numpy as np

# import os
# print("当前目录:", os.getcwd())
# print("文件是否存在:", os.path.exists('lxjm_stock.csv'))
# print("文件是否存在:", os.path.exists('8-专题实验\python\lxjm_stock.csv'))

# 1. 读取CSV文件
df = pd.read_csv('8-专题实验\python\lxjm_stock.csv')

# 显示数据框df的前5行
print("数据框df的前5行：")
print(df.head(5))
print()

# 2. 计算对数收益率
# 公式：r_t = ln(P_t / P_{t-1})
df['return'] = np.log(df['close']/df['close'].shift(1))

# 显示数据框df的前5行
print("数据框df的前5行：")
print(df.head(5))
print()

# 从数据框 df 中删除在 'return' 列中值为 NaN（缺失值）的行
df.dropna(subset=['return'], inplace=True)

# 显示数据框df的前5行
print("数据框df的前5行：")
print(df.head(5))
print()

# 3. 计算年化收益率
# 方法：日收益率均值 × 252（假设一年有252个交易日）
mean_daily_return = df['return'].mean()
annualized_return = mean_daily_return * 252

# 4. 计算年化波动率
# 方法：日收益率标准差 × sqrt(252)
daily_volatility = df['return'].std()
annualized_volatility = daily_volatility * np.sqrt(252)

# 5. 使用格式化字符串，打印年化收益率的数值和百分比形式
print(f"年化收益率: {annualized_return:.4f} ({annualized_return*100:.2f}%)")
print(f"年化波动率: {annualized_volatility:.4f} ({annualized_volatility*100:.2f}%)")

